Digital filter design is usually accomplished by a well known procedure wherein the desired frequency response of the filter is transformed into a time domain representation. Sampled values of the time domain function at periodic intervals near the center thereof are used as weighting coefficients in the implementation of the filter.
While filters of virtually any desired characteristics can readily be designed by this technique, practical constraints usually limit the number of filter stages (i.e. coefficients) that can be implemented. This limit, which is related to the granularity with which the time domain representation is sampled to yield filter coefficients, compromises the filter characteristics. Thus, a filter that is designed for out-of-band attenuation of at least 40 dB may have only 30 dB attenuation when implemented with 16 coefficients.
When characterizing a desired filter response in the frequency domain, it is typical to specify a desired passband shape, and a flat stop band at some desired level below the passband. Such a flat stop band, however, cannot be realized without a virtually infinite number of filter elements. When this desired response is transformed into a finite number of filter coefficients, the resulting filter response has a rippled stop band. The ripples often violate certain of the initial design constraints, such as the 40 dB out-of-band attenuation figure in the noted example. Sometimes, however, important design constraints can be met if, instead of trying to realize an ideal filter with a finite number of elements, the designer deliberately selects coefficients that do not correspond to an ideal filter.
While plausible in theory, filter designers do not typically start with various rippled filter responses and work through the math to yield corresponding filter coefficients. Instead, usual practice is to compute the time domain function for an ideal filter and then to perturb this function to alter the frequency domain counterpart. By iteratively perturbing the time domain function and computing the corresponding finite element filter response, a designer can sometimes meet critical design constraints with less coefficients than would normally be required.
The above-referenced perturbation is often accomplished by multiplying the idealized time domain function with a windowing function. The Hamming window function is often used, although the literature notes use of other functions, such as the Kaiser function. See, for example, the text Digital Signal Processing by Oppenheim et al, Prentice Hall, 1975, pp. 239-250. Perturbing by windowing has an added advantage of mitigating the discontinuities at the edges of the sampled time domain function, thereby reducing spurious filter responses.
According to the present invention, the time domain function is multiplied by a Gaussian window function. The Gaussian function has been found advantageous in many respects. First and foremost, the inventor has discovered that it unexpectedly and fortuitously yields filter coefficients that permit certain design constraints to be met with less filter coefficients than would otherwise be possible using prior art windows or other filter optimization techniques. Second, the Gaussian window is a variable one, permitting the designer to iterate with different window parameters in an attempt to optimize a desired design. Finally, the Gaussian window is computationally simple to implement, permitting an iterative design to proceed relatively rapidly, in contrast to designs employing other variable window functions, such as the Kaiser function, that are computationally intensive to work with, slowing an iterative design.
These and additional features and advantages of the present invention will be more readily apparent from the following detailed description thereof, which proceeds with reference to the accompanying drawings.